#pragma once

// 无头单向非循环链表
#include <stdio.h>
#include <malloc.h>

typedef int SLTDataType;

struct SListNode
{
	SLTDataType data;
	struct SListNode* next;
};

typedef struct SListNode SLTNode;

SLTNode* BuySListNode(SLTDataType x);

// 可能会改变链表的头指针，传二级指针
void SListPushBack(SLTNode** ppHead, SLTDataType x);// 尾插
void SListPushFront(SLTNode** ppHead, SLTDataType x);// 头插
void SListPophBack(SLTNode** ppHead);// 尾删
void SListPopFront(SLTNode** ppHead);// 头删

SLTNode* SListFind(SLTNode* pHead, SLTDataType x);
void SListInsert(SLTNode** ppHead, SLTNode* pos, SLTDataType x);// 在pos的前面插入x
void SListErase(SLTNode** ppHead, SLTNode* pos);// 删除pos位置的值

// 不会改变链表的头指针，传一级指针
void SListPrint(SLTNode* pHead);// 打印